package org.cytoscape.myapp.cytoscape_app_v1.internal.grupos.clasificadores;

import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import java.util.Vector;

import org.cytoscape.model.CyNode;
import org.cytoscape.myapp.cytoscape_app_v1.internal.grupos.Grupos;
import org.cytoscape.myapp.cytoscape_app_v1.internal.grupos.criterios.Criterio;

public class ClasificadorXorBest extends Clasificador{
	

	public ClasificadorXorBest(Vector<Criterio> criterios) {
		super(criterios);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void addNodeToGroup(CyNode node, List<Object> nodeList, Grupos grupos) {
		// TODO Auto-generated method stub
		HashMap<Integer, Criterio> critOrden = new HashMap<Integer, Criterio>();
		
		for(Criterio crit:this.criterios){
			int size = crit.esValido(nodeList);
			if ((size!=0) && (!critOrden.containsKey(size)))
				critOrden.put(size, crit);
		}
		grupos.addNode(node, this.getBestCriterio(critOrden).getNombre());
	}
	
	private Criterio getBestCriterio(HashMap<Integer, Criterio> critOrden){
		Set<Integer> keys = critOrden.keySet();
		List<Integer> s= new Vector<Integer>(keys);
		Collections.sort(s);
		return critOrden.get(s.get(s.size()-1));
	}

}
